package Passageiros;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import Vo.AeroportosVO;

public class AeroportosDAO extends DataSourceDAO 
{
	public AeroportosDAO( ) 
	{
		
	}

    public AeroportosVO consultarAeroportos( int codigoAeroporto ) throws DAOException  
    {
    	AeroportosVO aeroportos	= null;
        String select = "SELECT * FROM AEROPORTOS WHERE CODIGOAEROPORTO = ?";
        PreparedStatement pstmt	= null;
        ResultSet rs = null;
        
        try 
        {
        	connect( ) ;
            pstmt = connection.prepareStatement( select );
            pstmt.setInt( 1, codigoAeroporto ) ;
            rs = pstmt.executeQuery( ) ;
            if ( rs.next() ) 
            {
                int codigoCidade = rs.getInt("CODIGOCIDADE");
                String descricao = rs.getString("DESCRICAO");
               
                
                
                aeroportos = new AeroportosVO( );
                aeroportos.setCodigoAeroporto( codigoAeroporto );
                aeroportos.setCodigoCidade( codigoCidade ) ; 
                aeroportos.setDescricaoAeroporto( descricao ) ; 
            }
        } 
        catch ( SQLException e ) 
        {
            e.printStackTrace();
            throw new DAOException("Impossivel consultar aeroportos!", e );
        } 
        finally 
        {
            try 
            {
                if ( pstmt != null ) 
                {
                    pstmt.close();
                }
                if ( rs != null ) 
                {
                    rs.close();
                }
                close( ) ;
            } 
            catch ( SQLException e ) 
            {
                e.printStackTrace( ) ;
            }
        }
        return aeroportos ;
    }
    
	public void inserirAeroportos( AeroportosVO aeroportos ) throws DAOException  
    {
        String insert = "INSERT INTO AEROPORTOS ( CODIGOAEROPORTO, CODIGOCIDADE, DESCRICAO) VALUES (?,?,?)";
        PreparedStatement pstmt = null;
        
        try 
        {
        	connect( ) ;
            connection.setAutoCommit( false );
            pstmt = connection.prepareStatement( insert );
            pstmt.setInt(1,aeroportos.getCodigoAeroporto());
            pstmt.setInt( 2,aeroportos.getCodigoCidade());
            pstmt.setString( 3, aeroportos.getDescricaoAeroporto());
            pstmt.executeUpdate( ) ;
            commit( ) ;
        } 
        catch ( SQLException e ) 
        {
            rollback( ) ;
            e.printStackTrace( ) ;
            throw new DAOException ( "Impossivel inserir aeroportos!" , e ) ;
        } 
        finally 
        {
            try 
            {
                if ( pstmt != null ) 
                {
                    pstmt.close();
                }
                close( ) ;
            } 
            catch ( SQLException e ) 
            {
                e.printStackTrace( );
            }
        }
    }
    
    public void excluirAeroportos( AeroportosVO aeroportos )  throws DAOException  
    {
        String delete = "DELETE FROM AEROPORTOS WHERE CODIGOAEROPORTOS = ?";
        PreparedStatement pstmt = null;
        
        try 
        {
        	connect( ) ;
            connection.setAutoCommit( false );
            pstmt = connection.prepareStatement( delete );
            pstmt.setInt( 1,aeroportos.getCodigoAeroporto( ) ) ;
            pstmt.executeUpdate( ) ;
            commit( ) ;
        } 
        catch ( SQLException e ) 
        {
            rollback( ) ;
            e.printStackTrace( ) ;
            throw new DAOException ( "Impossivel deletar aeroportos!" , e ) ;
        } 
        finally 
        {
            try 
            {
                if ( pstmt != null ) 
                {
                    pstmt.close();
                }
                close( ) ;
            } 
            catch ( SQLException e ) 
            {
                e.printStackTrace( ) ;
            }
        }
    }
    
    public void alterarAeroportos( AeroportosVO aeroportos ) throws DAOException  
    {
        String insert = "UPDATE AEROPORTOS SET DESCRICAO = ?,CODIGOCIDADE = ? WHERE CODIGOAEROPORTO = ?";
        PreparedStatement pstmt = null;
        
        try 
        {
        	connect( ) ;
            connection.setAutoCommit( false );
            pstmt = connection.prepareStatement( insert );
            pstmt.setString(1, aeroportos.getDescricaoAeroporto() );
            pstmt.setInt(2, aeroportos.getCodigoCidade() );
            pstmt.setInt(3, aeroportos.getCodigoAeroporto() );
            pstmt.executeUpdate ();
            commit( ) ;
        } 
        catch ( SQLException e ) 
        {
            rollback( ) ;
            e.printStackTrace( ) ;
            throw new DAOException ( "Impossivel alterar aeroportos!" , e ) ;
        } 
        finally 
        {
            try 
            {
                if ( pstmt != null ) 
                {
                    pstmt.close();
                }
                close( ) ;
            } 
            catch ( SQLException e ) 
            {
                e.printStackTrace();
            }
        }
    }
}
